package webServer

import (
	"7qule.com/sd3/rpcService/Common"
	"net/http"
)

// 处理函数
type HandleFunc func(context *ApiContext) *ResponseObject

// API处理结构
type ApiHandler struct {
	// API完整路径名称
	apiFullName string

	// 方法定义
	handleFun HandleFunc

	// 方法参数名称集合
	funcParamNames []string
}

// API完整路径名称
func (this *ApiHandler) ApiFullName() string {
	return this.apiFullName
}

// 方法定义
func (this *ApiHandler) HandleFun() HandleFunc {
	return this.handleFun
}

// 方法参数名称集合
func (this *ApiHandler) FuncParamNames() []string {
	return this.funcParamNames
}

// 检测参数数量
func (this *ApiHandler) CheckParam(r *http.Request) Common.ResultStatus {
	for _, name := range this.funcParamNames {
		if r.Form[name] == nil || len(r.Form[name]) == 0 {
			return Common.ResultStatus_Cross_APIParamError
		}
	}

	return Common.ResultStatus_Success
}

// 创建新的请求方法对象
// _apiFullName：API完整路径名称
// _funcDefinition：方法定义
// _funcParamNames：方法参数名称集合
func newApiHandler(_apiFullName string, _funcDefinition HandleFunc, _funcParamNames ...string) *ApiHandler {
	return &ApiHandler{
		apiFullName:    _apiFullName,
		handleFun:      _funcDefinition,
		funcParamNames: _funcParamNames,
	}
}
